package com.algorithms.absdatatypes;

public interface HeterogenousDictionary extends Container
{
	/*
	 * find the element having element key as input 
	 */
     public <V> V find(Class<V> key); 
     /*
      * find the element previous to the given element pointed to by key.The key 
      * of this returned element should be the largest less than or equal to the
      * input key
      */
     public <V> V findPrevKeyElement(Class<V> key); 
     
     /*
      * find the element next to the given element pointed to by key.the key 
      * of this returned element should be the smallest greater than or equal to the
      * input key
      */
     public <V> V findNextKeyElement(Class<V> key); 
     
     /*
      * 
      *  rank ranges from  0..size(container)
      */
     public <V> V findElementWithRank(int rank); 
     
     /*
      * find the element having the largest key that is less
      * than equal to the key of the input element
      */
     public <V> V findPrevElement(V element);
     
     /*
      * find the element having the smallest key that is greater
      * than equal to the key of the input element
      */
     public <V> V findNextElement(V element);
     
     /*
      * Find the element with minimum key
      */
     public <V> V findElementWithMinKey();
     
     /*
      * Insert element and return the reference
      */
     public <V> V  insertElement(V element);
     
     /*
      * Remove element and return the reference
      */
     public <V> V  removeElement(V element);
     
     /*
      * Modify element and return the reference
      */
     public <V> void   modifyElement(V newElement,V oldElement);
     
     
}
